package Csv2RDF;

import com.opencsv.exceptions.CsvValidationException;

import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * {@code CSVReader}的作用为读取csv文件
 */
public class CSVReader {

  public static String csvName;
  static List<String[]> csvData = new ArrayList<>();

  /**
   * 读取csv文件，返回一个存储有csv文件内容的二维字符串数组
   * csv文件的第一行和第一列表示{@code Face}的Id，其他非空cell表示对应两个面之间的属性关系，
   * 如第i行表示{@code face1}，第j列表示{@code face2}，对应的cell内容为{@code "overlapped"}，
   * 则表示的三元组为{@code (face1, overlapped, face2)}
   *
   * @param csvName 输入csv文件名称
   * @return {@code csvArray}为存储csv文件内容的二维数组
   */
  public static String[][] ReadCSVFile(String csvName) {
    try (com.opencsv.CSVReader csvReader = new com.opencsv.CSVReader(new FileReader(csvName))) {
      String[] nextLine;
      while ((nextLine = csvReader.readNext()) != null) {
        csvData.add(nextLine);
      }
    } catch (IOException | CsvValidationException e) {
      throw new RuntimeException(e);
    }

    String[][] csvArray = new String[csvData.size()][];
    csvArray = csvData.toArray(csvArray);
    return csvArray;
  }
}
